﻿using System.Diagnostics.Contracts;

namespace System.Reactive.Concurrency
{
	public class SchedulerQueue<TAbsolute>
		where TAbsolute : IComparable<TAbsolute>
	{
		public int Count
		{
			get
			{
				Contract.Ensures(Contract.Result<int>() >= 0, null, "Contract.Result<int>() >= 0");
				return 0;
			}
		}

		public SchedulerQueue(int capacity)
		{
			Contract.Requires(capacity >= 0, null, "capacity >= 0");
		}

		public ScheduledItem<TAbsolute> Dequeue()
		{
			Contract.Requires(Count > 0, null, "Count > 0");
			//Contract.Ensures(Contract.Result<ScheduledItem<TAbsolute>>() != null, null, "Contract.Result<ScheduledItem<TAbsolute>>() != null");
			return null;
		}

		public void Enqueue(ScheduledItem<TAbsolute> scheduledItem)
		{
			//Contract.Requires(scheduledItem != null, null, "scheduledItem != null");
		}

		public ScheduledItem<TAbsolute> Peek()
		{
			Contract.Requires(Count > 0, null, "Count > 0");
			//Contract.Ensures(Contract.Result<ScheduledItem<TAbsolute>>() != null, null, "Contract.Result<ScheduledItem<TAbsolute>>() != null");
			return null;
		}

		public bool Remove(ScheduledItem<TAbsolute> scheduledItem)
		{
			return false;
		}
	}
}